from requests_html import HTML
from tgrocery import Grocery
from vis_sys.settings import CLASS_MODEL_NAME
from echart.elastic_tool import TextClass

grocery = Grocery(CLASS_MODEL_NAME)
grocery.load()

def html_to_text(doc):
    # 去掉html标签
    html = HTML(html=doc)
    return html.text

def check_one(content, is_html=False, n=5):
    """
    处理单个
    :param data:
    :return:
    """
    if is_html:
        content = html_to_text(content)

    predict = grocery.predict(content)

    res = sorted(predict.dec_values.items(), key=lambda x:x[1], reverse=True)
    return {'details': res[:n], 'class': predict.predicted_y}

def check_fsp_ids(ids):
    """
    批处理一堆分类
    :param data:
    :return:
    """
    # 接受id和内容，如果id上已经处理了，马上返回结果，如果没有处理当前信息

    tc = TextClass()
    responses = tc.find(ids)
    res = {}
    for hit in responses.hits:
        res[str(hit.article_id)] = {
            'id': hit.article_id,
            'class': hit.class_name,
            'score': hit.score,
            'title': hit.title
        }
    result = []
    for item in ids:
        val = res.get(item)
        if val:
            result.append(val)
        else:
            result.append({
                'id': item,
                'class': 'NaN',
                'score': 0,
                'title': 'Nan'
            })
    return result


if __name__ == '__main__':
    print(check_fsp_ids(['900005','100009','99744']))
#     print(check_one("""境外的输入会不会导致本土的第二次大流行？24日，中国疾控中心研究员吴尊友表示，我们已经建立了“三道防线”，这“三道防线”能够很好地抵御境外输入病例。
#
# 　　第一道防线，境外感染者在入关时海关是第一道防线，海关通过测量体温、询问症状，以及对过去40天旅行史的报告，能够发现如果有症状或者出访前已经有症状的可以筛查出来，筛查出来以后直接送到指定医疗机构治疗。
#
# 　　第二道防线，入境后的人员要进行14天的隔离观察，如果处在潜伏期的进来了，这14天的观察期就能够发现，出现症状后很快会送到指定医疗机构去诊断治疗。
#
# 　　第三道防线，万一第一道、第二道还有漏的，避免出现症状以后，他总得要去到医疗机构就诊，经过前一阵的新冠肺炎的防疫实践锻炼，我们的医务人员已经有了这个意识，一旦有病人很快能够诊断治疗。
#
# 　　目前为止，我们的输入病例基本堵在第一道防线和第二道防线，我们兜底的第三道防线还没有发现病人，所以我们的“三道防线”应该能够很好地防范输入病例造成再次流行"""))
